/* 
    中间存储 日志输出所需的各项要素。
    1. 时间：描述本条日志的输出时间。
    2. 线程ID：描述本条日志是哪个线程输出的。
    3. 日志等级：描述本条日志的等级。
    4. 日志器名称：
    5. 日志文件名：描述本条日志在哪个源码文件中输出的。
    6. 日志行号：描述本条日志在源码文件的哪一行输出的。
    7. 日志数据：本条日志的有效载荷数据。
*/
#ifndef __MY_LOG_MESSAGE_H__
#define __MY_LOG_MESSAGE_H__

#include "Util.hpp"
#include "LogLevel.hpp"
#include <thread>

namespace LzcLog
{
    struct LogMessage
    {
        size_t _ctime;
        std::thread::id _tid;
        LogLevel::Value _level;
        std::string _logger_name;
        std::string _file_name;
        size_t _line_num;
        std::string _payload;

        LogMessage(const LogLevel::Value& level, 
                    const std::string& logger_name, 
                    const std::string& file_name, 
                    size_t line_num, 
                    const std::string& payload)
        :_ctime(Util::GetTime())
        ,_tid(std::this_thread::get_id())
        ,_level(level)
        ,_logger_name(logger_name)
        ,_file_name(file_name)
        ,_line_num(line_num)
        ,_payload(payload)
        {}
    };
}
#endif